home *** CD-ROM | disk | FTP | other *** search
- /* ************************************************************************* */
- /* */
- /* D O O R W A R E B B S F I L E I N T E R F A C E */
- /* */
- /* For Mycrosoft & Turbo C */
- /* */
- /* ************************************************************************* */
- /* */
- /* This module contains functions used to input access information */
- /* from the RBBS files. */
- /* */
- /* The following funtions are contained in this file: */
- /* */
- /* read_bbs_info - Read the BBS files */
- /* rbbs_read - Read the RBBS files (16.x +) */
- /* pcbbs_read - Read the PC-Board files (12.1) */
- /* pcbbs2_read - Read the PC-Board files (14.0) */
- /* wcbbs_read - Read the Wildcat files */
- /* qbbs_read - Read the Quick BBS files */
- /* gbbs_read - Read the GAP BBS files */
- /* wbbs_read - Read the WWIV BBS files */
- /* page_operator - Page local operator */
- /* chat_mode - Chat between remote & local */
- /* */
- /* */
- /* ************************************************************************* */
-
-
-
- /* ************************************************************************* */
- /* PROGRAM HISTORY */
- /* ************************************************************************* */
- /* 06/20/87 Version 1.00 */
- /* 06/14/88 Version 1.10 */
- /* Added Quick BBS support */
- /* */
- /* */
- /* ************************************************************************* */
-
-
-
- #include "dmcfg.h" /* Std. defines & includes */
- #include "dmdata.h" /* Std DM storage */
-
- static char nodeid[37][2] = { "0",
- "1",
- "2",
- "3",
- "4",
- "5",
- "6",
- "7",
- "8",
- "9",
- "A",
- "B",
- "C",
- "D",
- "E",
- "F",
- "G",
- "H",
- "I",
- "J",
- "K",
- "L",
- "M",
- "N",
- "O",
- "P",
- "Q",
- "R",
- "S",
- "T",
- "U",
- "V",
- "W",
- "X",
- "Y",
- "Z" };
-
-
- /******************************************************************************
- *
- * READ_BBS_INFO - Read user infor from BBS files
- *
- * process 1. If running local, exit
- * 2. Open the comm port
- * 3. Exit if error
- * 4. Read appropriate bbs files
- * 5. Exit if bad read
- * 6. Exit
- * input Node = -1 if local
- * Else node = BBS node number
- * path = Path to BBS files
- * = "" if running under RBBS Door Monitor
- * type = "RBBS" if RBBS 16.x, 17.x
- * = "QBBS" if Quick BBS
- * = "PCBOARD" if PC-Board 12.1
- * = "PCBOARD14" if PC-Board 14.0
- * = "WILDCAT" if Wildcat
- * = "GAP" if GAP BBS
- * = "WWIV" if WWIV BBS
- * = "SPITFIRE if Spitfire BBS (door)
- * = "SPITFIREK if Spitfire BBS (Main menu user command)
- * = "SPITFIREM if Spitfire BBS (Msg. menu user command)
- * = "SPITFIREF if Spitfire BBS (File menu user command)
- * output Returns 0 if all ok
- * ===== Comm Port Return Codes =====
- * Returns -1 if can't open node file NODES.BBS
- * Returns -2 if illegal node number in NODES.BBS
- * Returns -3 if illegal port name in NODES.BBS
- * Returns -4 if illegal number of parameters in PORTS.BBS
- * Returns -5 if illegal comm port id in PORTS.BBS
- * Returns -6 if illegal comm port address in PORTS.BBS
- * Returns -7 if illegal IRQ number in PORTS.BBS
- * Returns -8 if illegal INT enable in PORTS.BBS
- * Returns -9 if illegal handshake in PORTS.BBS
- * Returns -10 if illegal passthrough in PORTS.BBS
- * Returns -11 if Duplicate comm port definition in PORTS.BBS
- * Returns -12 if No defined port ids in PORTS.BBS
- * Returns -13 if Port is not defined in PORTS.BBS
- * ===== RBBS 16.x Return Codes =====
- * Returns -21 if can't find MESSAGES file
- * Returns -22 if can't read node record
- * Returns -23 if can't find DORINFOx files
- * Returns -24 if can't read user record
- * ===== PC-Board Return Codes =====
- * Returns -31 if can't find PCBOARD.SYS info
- * Returns -32 if can't read PCBOARD.SYS info
- * ===== Wildcat Return Codes =====
- * Returns -41 if can't find CALLINFO.BBS info
- * Returns -42 if can't read CALLINFO.BBS info
- * ===== QBBS Return Codes =====
- * Returns -51 if can't find DORINFOx.DEF info
- * Returns -52 if can't read DORINFOx.DEF info
- * ===== GAP BBS Return Codes =====
- * Returns -61 if can't find DOOR.SYS info
- * Returns -62 if can't read DOOR.SYS info
- * ===== WWIV BBS Return Codes =====
- * Returns -71 if can't find CHAIN.TXT info
- * Returns -72 if can't read CHAIN.TXT info
- * ===== SPITFIRE BBS Return Codes =====
- * Returns -81 if can't find SFDOORS.DAT info
- * Returns -82 if can't read SFDOORS.DAT info
- * Returns -83 if can't find SFMAIN.DAT info
- * Returns -84 if can't read SFMAIN.DAT info
- * Returns -85 if can't find SFMESS.DAT info
- * Returns -86 if can't read SFMESS.DAT info
- * Returns -87 if can't find SFFILE.DAT info
- * Returns -88 if can't read SFFILE.DAT info
- * ===== Door Monitor Return Codes =====
- * Returns -101 if can't find TIMEOFFx.DOR
- * Returns -102 if can't find or read NAMES.DOR
- * ===== Misc Return Codes =====
- * Returns 1 if bad type parameter
- *****************************************************************************/
-
- read_bbs_info(node, path, type)
-
- int node; /* BBS node number */
- char *path; /* Path to BBS files */
- char *type; /* BBS identifier */
- {
- int i;
-
-
- /*
- * Store incomming parms
- */
-
- if(node != -1)
- {
- user_node = node; /* Save node number */
-
- if(strlen(path)) /* If BBS path specified */
- {
- strcpy(bbs_dir, path); /* ...copy it over */
- if(bbs_dir[strlen(bbs_dir) - 1] != '\\') /* ...if not terminated... */
- strcat(bbs_dir, "\\"); /* ......then fix it */
- }
- else
- {
- strcpy(bbs_dir, "\0"); /* MWB - running from MON */
- }
- }
-
-
- /*
- * Open Remote Stream
- */
-
- if(node == -1)
- remote_user = 0;
- else
- {
- i = io_open(node);
-
- if(i)
- return(i);
- }
-
-
- /*
- * Initialize Local Variables
- */
-
- srand(rnd_clock()); /* Set random seed based on clock value */
-
-
- /*
- * Setup player information
- */
-
- if(remote_user)
- {
- if(strlen(path))
- {
- /* Read BBS Files */
-
- if(strlen(type))
- {
- if(strcmp(strupr(type), "SPITFIRE") == 0)
- {
- i = sfbbs_read(node, "SFDOORS.DAT");
- if(i)
- return(i - 80);
- }
- else if(strcmp(strupr(type), "SPITFIREK") == 0)
- {
- i = sfbbs_read(node, "SFMAIN.DAT");
- if(i)
- return(i - 82);
- }
- else if(strcmp(strupr(type), "SPITFIREM") == 0)
- {
- i = sfbbs_read(node, "SFMESS.DAT");
- if(i)
- return(i - 84);
- }
- else if(strcmp(strupr(type), "SPITFIREF") == 0)
- {
- i = sfbbs_read(node, "SFFILE.DAT");
- if(i)
- return(i - 86);
- }
- else if(strcmp(strupr(type), "WWIV") == 0)
- {
- i = wbbs_read(node);
- if(i)
- return(i - 70);
- }
- else if(strcmp(strupr(type), "GAP") == 0)
- {
- i = gbbs_read(node);
- if(i)
- return(i - 60);
- }
- else if(strcmp(strupr(type), "QBBS") == 0)
- {
- i = qbbs_read(node);
- if(i)
- return(i - 50);
- }
- else if(strcmp(strupr(type), "WILDCAT") == 0)
- {
- i = wcbbs_read(node);
- if(i)
- return(i - 40);
- }
- else if(strcmp(strupr(type), "PCBOARD14") == 0)
- {
- i = pcbbs2_read(node);
- if(i)
- return(i - 30);
- }
- else if(strcmp(strupr(type), "PCBOARD") == 0)
- {
- i = pcbbs_read(node);
- if(i)
- return(i - 30);
- }
- else if(strcmp(strupr(type), "RBBS") == 0)
- {
- /* i = rbbs_read(node); */
- i = qbbs_read(node);
- if(i)
- return(i - 20);
- }
- }
- else
- return(1);
-
-
- if(bbs_node_info.snoop[1] != '1')
- {
- local_cls();
- no_cursor();
- }
- }
- else
- {
- /* Read Monitor Files */
-
- i = mon_read(node);
- if(i)
- return(100 - i);
-
- i = mon_player(user_name, mon_user);
- if(i)
- return(101 - i);
- }
- }
- return(0);
- }
-
-
- /******************************************************************************
- *
- * RBBS_READ - Read user infor from BBS files
- *
- * process 1. If running local, exit
- * 2. Open MESSAGES file
- * 3. Exit if not found
- * 4. Read appropriate node record
- * 5. Exit if bad read
- * 6. Store users name
- * 7. Store logon time
- * 8. Close file
- * 9. Open DORINFOx file
- * 10. Exit if not found
- * 11. Read user information
- * 12. Close file
- * 13. Store security level
- * 14. Store graphics type
- * 15. Store nulls flag
- * 16. Store caps flag
- * 17. Store page length
- * 18. Store used time
- * 19. Store timelimit
- * 20. Exit
- * input Node = -1 if no parameters
- * Else node = BBS node number
- * output Returns 0 if all ok
- * Returns -1 if can't find MESSAGES file
- * Returns -2 if can't read node record
- * Returns -3 if can't find DORINFOx files
- * Returns -4 if can't read user record
- *****************************************************************************/
-
- rbbs_read(node)
-
- int node; /* BBS node number */
- {
- long lseek();
- long cvt_time(); /* Convert time string */
- long cur_time(); /* Get current time */
-
- FS rfd; /* File control block */
- long foffset; /* File offset */
-
- int i, j, k; /* Work variables */
- char string_data[80]; /* Work space */
-
- /*
- * Exit if local only
- */
-
- if(remote_user == 0) /* If remote not active... */
- return(0); /* ...exit all ok */
-
-
- /*
- * Open MESSAGES file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, "MESSAGES");
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open MESSAGES */
- if(i) /* If file not found... */
- return(-1); /* ...exit with error */
-
-
- /*
- * Read appropriate node record
- */
-
- if(node == 0)
- foffset = 128L; /* Calc location of node rec */
- else
- foffset = node * 128L; /* Calc location of node rec */
- lseek(rfd.fh, foffset, 0); /* Seek the location */
- if(read(rfd.fh, &bbs_node_info, 128) != 128) /* If bad read... */
- return(-2); /* ...error */
-
- if(strcmp(bbs_node_info.sysop, "-1") == 0)
- remote_user = 0;
-
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* Close it */
-
-
- /*
- * Open DORINFOx file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, "DORINFO");
- strcat(rfd.name, nodeid[node]);
- strcat(rfd.name, ".DEF");
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open USERS */
- if(i) /* If file not found... */
- return(-3); /* ...exit with error */
-
-
- /*
- * Read in the user info
- */
-
- for(i = 0 ; i < 12 ; i++) /* Read each line in */
- {
- if(fgets(ascii_user_info[i], 128, rfd.fd) == NULL) /* If bad read... */
- {
- file_close(&rfd);
- return(-4);
- }
- }
-
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* close it */
-
-
- /*
- * Store users name
- */
-
- i = 0;
- while((i < 31) && (ascii_user_info[6][i] != 0x0d) &&
- (ascii_user_info[6][i] != 0x0a) && (ascii_user_info[6][i] != 0x00))
- {
- bbs_user_info.name[i] = ascii_user_info[6][i];
- user_name[i] = ascii_user_info[6][i];
- i++;
- }
- if(i < 31)
- {
- bbs_user_info.name[i] = ' ';
- user_name[i] = ' ';
- i++;
- }
- j = 0;
- while((i < 31) && (ascii_user_info[7][j] != 0x0d) &&
- (ascii_user_info[7][j] != 0x0a) && (ascii_user_info[7][j] != 0x00))
- {
- bbs_user_info.name[i] = ascii_user_info[7][j];
- user_name[i] = ascii_user_info[7][j];
- i++;
- j++;
- }
- while(i < 31)
- {
- bbs_user_info.name[i] = ' ';
- user_name[i] = ' ';
- i++;
- }
- user_name[i] = 0x00;
-
-
- /*
- * Store security level
- */
-
- bbs_user_info.security = atoi(ascii_user_info[10]);
- user_security = bbs_user_info.security;
-
-
- /*
- * Store graphics type
- */
-
- user_graphics = atoi(ascii_user_info[9]);
-
-
- /*
- * Store nulls flag
- */
-
- user_nulls = 0;
-
-
- /*
- * Store caps flag
- */
-
- user_caps = 0;
-
-
- /*
- * Store page length
- */
-
- user_page = 23;
-
-
- /*
- * Compute effective login
- */
-
- user_start = cur_time(); /* Remeber when we started */
- user_signon = cur_time();
-
-
- /*
- * Store timelimit
- */
-
- user_signoff = atoi(ascii_user_info[11]) * 60L; /* Compute logoff */
- user_signoff += user_signon;
-
-
- /*
- * Test for local node
- */
-
- if(strnicmp(ascii_user_info[3], "COM0", 4) == 0)
- remote_user = 0;
-
-
- /*
- * Exit
- */
-
- return(0); /* Exit all ok */
-
- }
-
-
- /******************************************************************************
- *
- * QBBS_READ - Read user infor from BBS files
- *
- * process 1. If running local, exit
- * 2. Set default node configuration
- * 3. Open DORINFOx file
- * 4. Exit if not found
- * 5. Read user information
- * 6. Close file
- * 7. Store security level
- * 8. Store graphics type
- * 9. Store nulls flag
- * 10. Store caps flag
- * 11. Store page length
- * 12. Store used time
- * 13. Store timelimit
- * 14. Exit
- * input Node = -1 if no parameters
- * Else node = BBS node number
- * output Returns 0 if all ok
- * Returns -1 if can't find DORINFOx files
- * Returns -2 if can't read user record
- *****************************************************************************/
-
- qbbs_read(node)
-
- int node; /* BBS node number */
- {
- long cvt_time(); /* Convert time string */
- long cur_time(); /* Get current time */
-
- FS rfd; /* File control block */
- long foffset; /* File offset */
-
- int i, j, k; /* Work variables */
- char string_data[80]; /* Work space */
-
- /*
- * Exit if local only
- */
-
- if(remote_user == 0) /* If remote not active... */
- return(0); /* ...exit all ok */
-
-
- /*
- * Open DORINFOx file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, "DORINFO");
- strcat(rfd.name, nodeid[node]);
- strcat(rfd.name, ".DEF");
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open USERS */
- if(i) /* If file not found... */
- return(-1); /* ...exit with error */
-
-
- /*
- * Read in the user info
- */
-
- for(i = 0 ; i < 12 ; i++) /* Read each line in */
- {
- if(fgets(ascii_user_info[i], 128, rfd.fd) == NULL) /* If bad read... */
- {
- file_close(&rfd);
- return(-2);
- }
- }
-
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* close it */
-
-
- /*
- * Set bbs node parameters to defaults
- */
-
- bbs_node_info.snoop[0] = '-';
- bbs_node_info.snoop[1] = '1';
- bbs_node_info.line_printer[0] = ' ';
- bbs_node_info.line_printer[1] = '0';
- bbs_node_info.sysop_avail[0] = '-';
- bbs_node_info.sysop_avail[1] = '1';
- bbs_user_info.options.bit_flags = BBS_OPTION_BELL;
- bbs_node_info.sysop_next[0] = ' ';
- bbs_node_info.sysop_next[1] = '0';
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- bbs_node_info.sysop_annoy[0] = ' ';
- bbs_node_info.sysop_annoy[1] = '0';
- bbs_node_info.doors_avail[0] = '-';
- bbs_node_info.doors_avail[1] = '1';
- bbs_node_info.eight_bits[0] = '-';
- bbs_node_info.eight_bits[1] = '1';
- bbs_node_info.upper_case[0] = ' ';
- bbs_node_info.upper_case[1] = '0';
- bbs_node_info.reserve_1[0] = ' ';
- bbs_node_info.reserve_1[1] = ' ';
- bbs_node_info.reserve_1[2] = ' ';
- bbs_node_info.reserve_1[3] = ' ';
- bbs_node_info.reserve_1[4] = ' ';
- bbs_node_info.sysop[0] = ' ';
- bbs_node_info.sysop[1] = '0';
- bbs_node_info.active[0] = 'A';
- bbs_node_info.reserved_2[0] = ' ';
- bbs_node_info.reserved_2[1] = ' ';
- bbs_node_info.reserved_3[0] = ' ';
- bbs_node_info.reserved_3[1] = ' ';
- bbs_node_info.reserved_3[2] = ' ';
- bbs_node_info.private_door[0] = ' ';
- bbs_node_info.private_door[1] = '0';
- bbs_node_info.transfer[0] = ' ';
- bbs_node_info.transfer[1] = ' ';
- strncpy(bbs_node_info.daily_exit_date, "01-01-1987", 10);
- strncpy(bbs_node_info.daily_exit_time, "01:00", 5);
- bbs_node_info.reliable[0] = '-';
- bbs_node_info.reliable[1] = '1';
- for(i = 0 ; i < 36 ; i++)
- bbs_node_info.reserved_4[i] = ' ';
-
-
- /*
- * Store users name
- */
-
- i = 0;
- while((i < 31) && (ascii_user_info[6][i] != 0x0d) &&
- (ascii_user_info[6][i] != 0x0a) && (ascii_user_info[6][i] != 0x00))
- {
- bbs_user_info.name[i] = ascii_user_info[6][i];
- user_name[i] = ascii_user_info[6][i];
- i++;
- }
- if(i < 31)
- {
- bbs_user_info.name[i] = ' ';
- user_name[i] = ' ';
- i++;
- }
- j = 0;
- while((i < 31) && (ascii_user_info[7][j] != 0x0d) &&
- (ascii_user_info[7][j] != 0x0a) && (ascii_user_info[7][j] != 0x00))
- {
- bbs_user_info.name[i] = ascii_user_info[7][j];
- user_name[i] = ascii_user_info[7][j];
- i++;
- j++;
- }
- while(i < 31)
- {
- bbs_user_info.name[i] = ' ';
- user_name[i] = ' ';
- i++;
- }
- user_name[i] = 0x00;
-
-
- /*
- * Store security level
- */
-
- bbs_user_info.security = atoi(ascii_user_info[10]);
- user_security = bbs_user_info.security;
-
-
- /*
- * Store graphics type
- */
-
- bbs_user_info.options.graphics[0] = ascii_user_info[9][0];
- string_data[0] = bbs_user_info.options.graphics[0]; /* Convert to number */
- string_data[1] = '\0';
- user_graphics = atoi(string_data);
-
-
- /*
- * Store nulls flag
- */
-
- user_nulls = 0;
-
-
- /*
- * Store caps flag
- */
-
- user_caps = 0;
-
-
- /*
- * Store page length
- */
-
- user_page = 23;
-
-
- /*
- * Compute effective login
- */
-
- user_start = cur_time(); /* Remeber when we started */
- user_signon = cur_time();
-
-
- /*
- * Store timelimit
- */
-
- user_signoff = atoi(ascii_user_info[11]) * 60L; /* Compute logoff */
- user_signoff += user_signon;
-
-
- /*
- * Test for local node
- */
-
- if(strnicmp(ascii_user_info[3], "COM0", 4) == 0)
- remote_user = 0;
-
-
- /*
- * Exit
- */
-
- return(0); /* Exit all ok */
-
- }
-
-
- /******************************************************************************
- *
- * PCBBS_READ - Read user infor from PC-BOARD files
- *
- * process 1. If running local, exit
- * 2. Open PCBOARD.SYS file
- * 3. Exit if not found
- * 4. Read user record
- * 5. Exit if bad read
- * 6. Store users name
- * 7. Store logon time
- * 8. Store security level
- * 9. Store graphics type
- * 10. Store nulls flag
- * 11. Store caps flag
- * 12. Store page length
- * 13. Store used time
- * 14. Store timelimit
- * 15. Close file
- * 16. Exit
- * input Node = -1 if no parameters
- * Else node = BBS node number
- * output Returns 0 if all ok
- * Returns -1 if can't find PCBOARD.SYS info
- * Returns -2 if can't read PCBOARD.SYS info
- *****************************************************************************/
-
- pcbbs_read(node)
-
- int node; /* BBS node number */
- {
- long lseek();
- long cvt_time(); /* Convert time string */
- long cur_time(); /* Get current time */
-
- FS rfd; /* File control block */
- long foffset; /* File offset */
-
- int i, j, k; /* Work variables */
- char string_data[80]; /* Work space */
-
- /*
- * Exit if local only
- */
-
- if(remote_user == 0) /* If remote not active... */
- return(0); /* ...exit all ok */
-
-
- /*
- * Open PCBOARD.SYS file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, "PCBOARD.SYS");
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open the file */
- if(i) /* If file not found... */
- return(-1); /* ...exit with error */
-
-
- /*
- * Read user node record
- */
-
- lseek(rfd.fh, 0L, 0); /* Seek the location */
- if(read(rfd.fh, &pcbbs_user_info, 128) != 128) /* If bad read... */
- return(-2); /* ...error */
-
-
- /*
- * Copy parms to RBBS structures
- */
-
- bbs_node_info.snoop[0] = pcbbs_user_info.display[0];
- bbs_node_info.snoop[1] = pcbbs_user_info.display[1];
- bbs_node_info.line_printer[0] = pcbbs_user_info.printer[0];
- bbs_node_info.line_printer[1] = pcbbs_user_info.printer[1];
- bbs_node_info.sysop_avail[0] = pcbbs_user_info.page_bell[0];
- bbs_node_info.sysop_avail[1] = pcbbs_user_info.page_bell[1];
-
- if(strncmp(pcbbs_user_info.caller_alarm, " 0", 2) == 0)
- bbs_user_info.options.bit_flags = 0;
- else
- bbs_user_info.options.bit_flags = BBS_OPTION_BELL;
-
- bbs_node_info.sysop_next[0] = pcbbs_user_info.sysop_next[0];
- bbs_node_info.sysop_next[1] = pcbbs_user_info.sysop_next[1];
-
- if(strncmp(pcbbs_user_info.bps, " 300", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(strncmp(pcbbs_user_info.bps, "0300", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(strncmp(pcbbs_user_info.bps, " 450", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '2';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '2';
- }
- else if(strncmp(pcbbs_user_info.bps, "0450", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '2';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '2';
- }
- else if(strncmp(pcbbs_user_info.bps, "1200", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
- else if(strncmp(pcbbs_user_info.bps, "2400", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
- else if(strncmp(pcbbs_user_info.bps, "4800", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '5';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '5';
- }
- else if(strncmp(pcbbs_user_info.bps, "9600", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '6';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '6';
- }
- else
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
-
- i = 0;
- while((i < 27) && (pcbbs_user_info.name[i] != 0x0d) &&
- (pcbbs_user_info.name[i] != 0x0a) && (pcbbs_user_info.name[i] != 0x00))
- {
- bbs_node_info.name[i] = pcbbs_user_info.name[i];
- bbs_user_info.name[i] = pcbbs_user_info.name[i];
- i++;
- }
- while(i < 31)
- {
- bbs_node_info.name[i] = ' ';
- bbs_user_info.name[i] = ' ';
- i++;
- }
- bbs_node_info.name[i] = '\0';
- bbs_user_info.name[i] = '\0';
-
- if(strncmp(pcbbs_user_info.graphics, " 0", 2) == 0)
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '0';
- bbs_user_info.options.graphics[0] = '0';
- }
- else
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '2';
- bbs_user_info.options.graphics[0] = '2';
- }
-
- for(i = 0 ; i < 12 ; i++)
- bbs_user_info.password[i] = pcbbs_user_info.password[i];
- bbs_user_info.password[i] = '\0';
-
- user_start = cur_time();
- user_signon = pcbbs_user_info.connect_time;
- user_signoff = pcbbs_user_info.max_time;
- user_signoff += user_signon;
-
- bbs_node_info.login_time[0] = pcbbs_user_info.logon[0];
- bbs_node_info.login_time[1] = pcbbs_user_info.logon[1];
- bbs_node_info.login_time[2] = pcbbs_user_info.logon[3];
- bbs_node_info.login_time[3] = pcbbs_user_info.logon[4];
- bbs_node_info.login_time[4] = '0';
- bbs_node_info.login_time[5] = '0';
-
-
- /*
- * Fill unsuplied parms to RBBS structures
- */
-
- bbs_node_info.sysop_annoy[0] = ' ';
- bbs_node_info.sysop_annoy[1] = '0';
- bbs_node_info.doors_avail[0] = '-';
- bbs_node_info.doors_avail[1] = '1';
- bbs_node_info.eight_bits[0] = '-';
- bbs_node_info.eight_bits[1] = '1';
- bbs_node_info.upper_case[0] = ' ';
- bbs_node_info.upper_case[1] = '0';
- bbs_node_info.reserve_1[0] = ' ';
- bbs_node_info.reserve_1[1] = ' ';
- bbs_node_info.reserve_1[2] = ' ';
- bbs_node_info.reserve_1[3] = ' ';
- bbs_node_info.reserve_1[4] = ' ';
- bbs_node_info.sysop[0] = ' ';
- bbs_node_info.sysop[1] = '0';
- bbs_node_info.active[0] = 'A';
- bbs_node_info.reserved_2[0] = ' ';
- bbs_node_info.reserved_2[1] = ' ';
- bbs_node_info.reserved_3[0] = ' ';
- bbs_node_info.reserved_3[1] = ' ';
- bbs_node_info.reserved_3[2] = ' ';
- bbs_node_info.private_door[0] = ' ';
- bbs_node_info.private_door[1] = '0';
- bbs_node_info.transfer[0] = ' ';
- bbs_node_info.transfer[1] = ' ';
- strncpy(bbs_node_info.daily_exit_date, "01-01-1987", 10);
- strncpy(bbs_node_info.daily_exit_time, "01:00", 5);
- bbs_node_info.reliable[0] = '-';
- bbs_node_info.reliable[1] = '1';
- for(i = 0 ; i < 36 ; i++)
- bbs_node_info.reserved_4[i] = ' ';
-
-
- bbs_user_info.security = 100;
- bbs_user_info.options.logins = 2;
- bbs_user_info.options.last_msg = 0;
- bbs_user_info.options.protocol[0] = ' ';
- bbs_user_info.options.margins = 0;
- bbs_user_info.options.subscription = 0;
- bbs_user_info.options.page_length = 23;
- bbs_user_info.options.reserved[0] = ' ';
- for(i = 0 ; i < 24 ; i++)
- bbs_user_info.residence[i] = ' ';
- for(i = 0 ; i < 19 ; i++)
- bbs_user_info.reserved[i] = ' ';
- strncpy(bbs_user_info.last_on, "01-01-87 01:00", 14);
- for(i = 0 ; i < 3 ; i++)
- bbs_user_info.last_dir[i] = '\0';
- bbs_user_info.downloads = 0;
- bbs_user_info.uploads = 0;
- bbs_user_info.elapsed = 0;
-
-
- /*
- * Store users name
- */
-
- for(i = 0 ; i < 31 ; i++) /* Copy all 31 chars */
- user_name[i] = bbs_node_info.name[i];
- user_name[31] = '\0'; /* Null terminate it */
-
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* Close it */
-
-
- /*
- * Store security level
- */
-
- user_security = bbs_user_info.security;
-
-
- /*
- * Store graphics type
- */
-
- string_data[0] = bbs_user_info.options.graphics[0]; /* Convert to number */
- string_data[1] = '\0';
- user_graphics = atoi(string_data);
-
-
- /*
- * Store nulls flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_NULLS)
- user_nulls = 8;
- else
- user_nulls = 0;
-
-
- /*
- * Store caps flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_CASE)
- user_caps = 1;
- else
- user_caps = 0;
-
-
- /*
- * Store page length
- */
-
- user_page = bbs_user_info.options.page_length;
-
-
- /*
- * Store timelimit
- */
-
- user_start = cur_time(); /* Remeber when we started */
-
-
- /*
- * Exit
- */
-
- return(0); /* Exit all ok */
-
- }
-
-
- /******************************************************************************
- *
- * PCBBS2_READ - Read user infor from PC-BOARD files
- *
- * process 1. If running local, exit
- * 2. Open PCBOARD.SYS file
- * 3. Exit if not found
- * 4. Read user record
- * 5. Exit if bad read
- * 6. Store users name
- * 7. Store logon time
- * 8. Store security level
- * 9. Store graphics type
- * 10. Store nulls flag
- * 11. Store caps flag
- * 12. Store page length
- * 13. Store used time
- * 14. Store timelimit
- * 15. Close file
- * 16. Exit
- * input Node = -1 if no parameters
- * Else node = BBS node number
- * output Returns 0 if all ok
- * Returns -1 if can't find PCBOARD.SYS info
- * Returns -2 if can't read PCBOARD.SYS info
- *****************************************************************************/
-
- pcbbs2_read(node)
-
- int node; /* BBS node number */
- {
- long lseek();
- long cvt_time(); /* Convert time string */
- long cur_time(); /* Get current time */
-
- FS rfd; /* File control block */
- long foffset; /* File offset */
-
- int i, j, k; /* Work variables */
- char string_data[80]; /* Work space */
-
- /*
- * Exit if local only
- */
-
- if(remote_user == 0) /* If remote not active... */
- return(0); /* ...exit all ok */
-
-
- /*
- * Open PCBOARD.SYS file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, "PCBOARD.SYS");
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open the file */
- if(i) /* If file not found... */
- return(-1); /* ...exit with error */
-
-
- /*
- * Read user node record
- */
-
- lseek(rfd.fh, 0L, 0); /* Seek the location */
- if(read(rfd.fh, &pcbbs2_user_info, 128) != 128) /* If bad read... */
- return(-2); /* ...error */
-
-
- /*
- * Copy parms to RBBS structures
- */
-
- bbs_node_info.snoop[0] = pcbbs2_user_info.display[0];
- bbs_node_info.snoop[1] = pcbbs2_user_info.display[1];
- bbs_node_info.line_printer[0] = pcbbs2_user_info.printer[0];
- bbs_node_info.line_printer[1] = pcbbs2_user_info.printer[1];
- bbs_node_info.sysop_avail[0] = pcbbs2_user_info.page_bell[0];
- bbs_node_info.sysop_avail[1] = pcbbs2_user_info.page_bell[1];
-
- if(strncmp(pcbbs2_user_info.caller_alarm, " 0", 2) == 0)
- bbs_user_info.options.bit_flags = 0;
- else
- bbs_user_info.options.bit_flags = BBS_OPTION_BELL;
-
- if(pcbbs2_user_info.sysop_next == '0')
- bbs_node_info.sysop_next[0] = ' ';
- else
- bbs_node_info.sysop_next[0] = '-';
- bbs_node_info.sysop_next[1] = pcbbs2_user_info.sysop_next;
-
- if(strnicmp(pcbbs2_user_info.bps, "LOCAL", 5) == 0)
- {
- remote_user = 0;
- }
- else if(strncmp(pcbbs2_user_info.bps, " 300", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(strncmp(pcbbs2_user_info.bps, " 0300", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(strncmp(pcbbs2_user_info.bps, "00300", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(strncmp(pcbbs2_user_info.bps, " 450", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '2';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '2';
- }
- else if(strncmp(pcbbs2_user_info.bps, " 0450", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '2';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '2';
- }
- else if(strncmp(pcbbs2_user_info.bps, "00450", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '2';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '2';
- }
- else if(strncmp(pcbbs2_user_info.bps, " 1200", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
- else if(strncmp(pcbbs2_user_info.bps, "01200", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
- else if(strncmp(pcbbs2_user_info.bps, " 2400", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
- else if(strncmp(pcbbs2_user_info.bps, "02400", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
- else if(strncmp(pcbbs2_user_info.bps, " 4800", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '5';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '5';
- }
- else if(strncmp(pcbbs2_user_info.bps, "04800", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '5';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '5';
- }
- else if(strncmp(pcbbs2_user_info.bps, " 9600", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '6';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '6';
- }
- else if(strncmp(pcbbs2_user_info.bps, "09600", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '6';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '6';
- }
- else if(strncmp(pcbbs2_user_info.bps, "19200", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '7';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '7';
- }
- else if(strncmp(pcbbs2_user_info.bps, "38400", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '8';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '8';
- }
- else
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
-
- i = 0;
- while((i < 25) && (pcbbs2_user_info.name[i] != 0x0d) &&
- (pcbbs2_user_info.name[i] != 0x0a) && (pcbbs2_user_info.name[i] != 0x00))
- {
- bbs_node_info.name[i] = pcbbs2_user_info.name[i];
- bbs_user_info.name[i] = pcbbs2_user_info.name[i];
- i++;
- }
- while(i < 31)
- {
- bbs_node_info.name[i] = ' ';
- bbs_user_info.name[i] = ' ';
- i++;
- }
-
- bbs_node_info.name[i] = '\0';
- bbs_user_info.name[i] = '\0';
-
- if(pcbbs2_user_info.graphics == '0')
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '0';
- bbs_user_info.options.graphics[0] = '0';
- }
- else
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '2';
- bbs_user_info.options.graphics[0] = '2';
- }
-
- for(i = 0 ; i < 12 ; i++)
- bbs_user_info.password[i] = pcbbs2_user_info.password[i];
- bbs_user_info.password[i] = '\0';
-
- user_start = cur_time();
- user_signon = cur_time();
- user_signoff = pcbbs2_user_info.time_left;
- user_signoff *= 60L;
- user_signoff += user_signon;
-
- bbs_node_info.login_time[0] = pcbbs2_user_info.logon[0];
- bbs_node_info.login_time[1] = pcbbs2_user_info.logon[1];
- bbs_node_info.login_time[2] = pcbbs2_user_info.logon[3];
- bbs_node_info.login_time[3] = pcbbs2_user_info.logon[4];
- bbs_node_info.login_time[4] = '0';
- bbs_node_info.login_time[5] = '0';
-
-
- /*
- * Fill unsuplied parms to RBBS structures
- */
-
- bbs_node_info.sysop_annoy[0] = ' ';
- bbs_node_info.sysop_annoy[1] = '0';
- bbs_node_info.doors_avail[0] = '-';
- bbs_node_info.doors_avail[1] = '1';
- bbs_node_info.eight_bits[0] = '-';
- bbs_node_info.eight_bits[1] = '1';
- bbs_node_info.upper_case[0] = ' ';
- bbs_node_info.upper_case[1] = '0';
- bbs_node_info.reserve_1[0] = ' ';
- bbs_node_info.reserve_1[1] = ' ';
- bbs_node_info.reserve_1[2] = ' ';
- bbs_node_info.reserve_1[3] = ' ';
- bbs_node_info.reserve_1[4] = ' ';
- bbs_node_info.sysop[0] = ' ';
- bbs_node_info.sysop[1] = '0';
- bbs_node_info.active[0] = 'A';
- bbs_node_info.reserved_2[0] = ' ';
- bbs_node_info.reserved_2[1] = ' ';
- bbs_node_info.reserved_3[0] = ' ';
- bbs_node_info.reserved_3[1] = ' ';
- bbs_node_info.reserved_3[2] = ' ';
- bbs_node_info.private_door[0] = ' ';
- bbs_node_info.private_door[1] = '0';
- bbs_node_info.transfer[0] = ' ';
- bbs_node_info.transfer[1] = ' ';
- strncpy(bbs_node_info.daily_exit_date, "01-01-1987", 10);
- strncpy(bbs_node_info.daily_exit_time, "01:00", 5);
- bbs_node_info.reliable[0] = '-';
- bbs_node_info.reliable[1] = '1';
- for(i = 0 ; i < 36 ; i++)
- bbs_node_info.reserved_4[i] = ' ';
-
-
- bbs_user_info.security = 100;
- bbs_user_info.options.logins = 2;
- bbs_user_info.options.last_msg = 0;
- bbs_user_info.options.protocol[0] = ' ';
- bbs_user_info.options.margins = 0;
- bbs_user_info.options.subscription = 0;
- bbs_user_info.options.page_length = 23;
- bbs_user_info.options.reserved[0] = ' ';
- for(i = 0 ; i < 24 ; i++)
- bbs_user_info.residence[i] = ' ';
- for(i = 0 ; i < 19 ; i++)
- bbs_user_info.reserved[i] = ' ';
- strncpy(bbs_user_info.last_on, "01-01-87 01:00", 14);
- for(i = 0 ; i < 3 ; i++)
- bbs_user_info.last_dir[i] = '\0';
- bbs_user_info.downloads = 0;
- bbs_user_info.uploads = 0;
- bbs_user_info.elapsed = 0;
-
-
- /*
- * Store users name
- */
-
- for(i = 0 ; i < 31 ; i++) /* Copy all 31 chars */
- user_name[i] = bbs_node_info.name[i];
- user_name[31] = '\0'; /* Null terminate it */
-
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* Close it */
-
-
- /*
- * Store security level
- */
-
- user_security = bbs_user_info.security;
-
-
- /*
- * Store graphics type
- */
-
- string_data[0] = bbs_user_info.options.graphics[0]; /* Convert to number */
- string_data[1] = '\0';
- user_graphics = atoi(string_data);
-
-
- /*
- * Store nulls flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_NULLS)
- user_nulls = 8;
- else
- user_nulls = 0;
-
-
- /*
- * Store caps flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_CASE)
- user_caps = 1;
- else
- user_caps = 0;
-
-
- /*
- * Store page length
- */
-
- user_page = bbs_user_info.options.page_length;
-
-
- /*
- * Store timelimit
- */
-
- user_start = cur_time(); /* Remeber when we started */
-
-
- /*
- * Exit
- */
-
- return(0); /* Exit all ok */
-
- }
-
-
- /******************************************************************************
- *
- * WCBBS_READ - Read user infor from Wildcat files
- *
- * process 1. If running local, exit
- * 2. Open CALLINFO.BBS file
- * 3. Exit if not found
- * 4. Read user record
- * 5. Exit if bad read
- * 6. Store users name
- * 7. Store logon time
- * 8. Store security level
- * 9. Store graphics type
- * 10. Store nulls flag
- * 11. Store caps flag
- * 12. Store page length
- * 13. Store used time
- * 14. Store timelimit
- * 15. Close file
- * 16. Exit
- * input Node = -1 if no parameters
- * Else node = BBS node number
- * output Returns 0 if all ok
- * Returns -1 if can't find CALLINFO.BBS info
- * Returns -2 if can't read CALLINFO.BBS info
- *****************************************************************************/
-
- wcbbs_read(node)
-
- int node; /* BBS node number */
- {
- long cvt_time(); /* Convert time string */
- long cur_time(); /* Get current time */
- long atol();
-
- FS rfd; /* File control block */
- long foffset; /* File offset */
-
- int i, j, k; /* Work variables */
- char string_data[80]; /* Work space */
-
- /*
- * Exit if local only
- */
-
- if(remote_user == 0) /* If remote not active... */
- return(0); /* ...exit all ok */
-
-
- /*
- * Open CALLINFO.BBS file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, "CALLINFO.BBS");
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open the file */
- if(i) /* If file not found... */
- return(-1); /* ...exit with error */
-
-
- /*
- * Read user node record
- */
-
- fseek(rfd.fd, 0L, 0); /* Seek the location */
- for(i = 0 ; i < 28 ; i++)
- {
- if(fgets(ascii_user_info[i], 128, rfd.fd) == NULL) /* If bad read... */
- {
- file_close(&rfd);
- return(-2); /* ...error */
- }
- }
-
-
- /*
- * Copy parms to RBBS structures
- */
-
- bbs_node_info.snoop[0] = '-';
- bbs_node_info.snoop[1] = '1';
- bbs_node_info.line_printer[0] = ' ';
- bbs_node_info.line_printer[1] = '0';
- bbs_node_info.sysop_avail[0] = '-';
- bbs_node_info.sysop_avail[1] = '1';
-
- bbs_user_info.options.bit_flags = BBS_OPTION_BELL;
-
- bbs_node_info.sysop_next[0] = ' ';
- bbs_node_info.sysop_next[1] = '0';
-
- if(strncmp(ascii_user_info[1], "1", 1) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(strncmp(ascii_user_info[1], "2", 1) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
- else if(strncmp(ascii_user_info[1], "0", 1) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
- else if(strncmp(ascii_user_info[1], "3", 1) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '6';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '6';
- }
- else
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
-
- i = 0;
- while((i < 31) && (ascii_user_info[0][i] != 0x0d) &&
- (ascii_user_info[0][i] != 0x0a) && (ascii_user_info[0][i] != 0x00))
- {
- bbs_node_info.name[i] = ascii_user_info[0][i];
- user_name[i] = ascii_user_info[0][i];
- i++;
- }
- while(i < 31)
- {
- bbs_node_info.name[i] = ' ';
- user_name[i] = ' ';
- i++;
- }
- user_name[i] = '\0';
-
- if(strncmp(strupr(ascii_user_info[5]), "MONO", 4) == 0)
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '0';
- bbs_user_info.options.graphics[0] = '0';
- user_graphics = 0;
- }
- else if(strncmp(strupr(ascii_user_info[5]), "COLOR", 5) == 0)
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '2';
- bbs_user_info.options.graphics[0] = '2';
- user_graphics = 2;
- }
- else
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '2';
- bbs_user_info.options.graphics[0] = '2';
- user_graphics = 2;
- }
-
- for(i = 0 ; i < 12 ; i++)
- bbs_user_info.password[i] = ascii_user_info[6][i];
- bbs_user_info.password[i] = '\0';
-
- user_start = cur_time();
- user_signon = cur_time();
- user_signoff = atol(ascii_user_info[4]) * 60L;
- user_signoff += user_signon;
-
- bbs_node_info.login_time[0] = ascii_user_info[10][0];
- bbs_node_info.login_time[1] = ascii_user_info[10][1];
- bbs_node_info.login_time[2] = ascii_user_info[10][3];
- bbs_node_info.login_time[3] = ascii_user_info[10][4];
- bbs_node_info.login_time[4] = '0';
- bbs_node_info.login_time[5] = '0';
-
-
- /*
- * Test for local access
- */
-
- i = 0;
- while(ascii_user_info[27][i] == ' ')
- i++;
- if(strnicmp(&(ascii_user_info[27][i]), "LOCAL", 5) == 0)
- remote_user = 0;
-
-
- /*
- * Fill unsuplied parms to RBBS structures
- */
-
- bbs_node_info.sysop_annoy[0] = ' ';
- bbs_node_info.sysop_annoy[1] = '0';
- bbs_node_info.doors_avail[0] = '-';
- bbs_node_info.doors_avail[1] = '1';
- bbs_node_info.eight_bits[0] = '-';
- bbs_node_info.eight_bits[1] = '1';
- bbs_node_info.upper_case[0] = ' ';
- bbs_node_info.upper_case[1] = '0';
- bbs_node_info.reserve_1[0] = ' ';
- bbs_node_info.reserve_1[1] = ' ';
- bbs_node_info.reserve_1[2] = ' ';
- bbs_node_info.reserve_1[3] = ' ';
- bbs_node_info.reserve_1[4] = ' ';
- bbs_node_info.sysop[0] = ' ';
- bbs_node_info.sysop[1] = '0';
- bbs_node_info.active[0] = 'A';
- bbs_node_info.reserved_2[0] = ' ';
- bbs_node_info.reserved_2[1] = ' ';
- bbs_node_info.reserved_3[0] = ' ';
- bbs_node_info.reserved_3[1] = ' ';
- bbs_node_info.reserved_3[2] = ' ';
- bbs_node_info.private_door[0] = ' ';
- bbs_node_info.private_door[1] = '0';
- bbs_node_info.transfer[0] = ' ';
- bbs_node_info.transfer[1] = ' ';
- strncpy(bbs_node_info.daily_exit_date, "01-01-1987", 10);
- strncpy(bbs_node_info.daily_exit_time, "01:00", 5);
- bbs_node_info.reliable[0] = '-';
- bbs_node_info.reliable[1] = '1';
- for(i = 0 ; i < 36 ; i++)
- bbs_node_info.reserved_4[i] = ' ';
-
-
- bbs_user_info.security = atoi(ascii_user_info[3]);
- bbs_user_info.options.logins = atoi(ascii_user_info[21]);
- bbs_user_info.options.last_msg = atoi(ascii_user_info[23]);
- bbs_user_info.options.protocol[0] = ' ';
- bbs_user_info.options.margins = 0;
- bbs_user_info.options.subscription = 0;
- bbs_user_info.options.page_length = atoi(ascii_user_info[22]);
- bbs_user_info.options.reserved[0] = ' ';
- for(i = 0 ; i < 24 ; i++)
- bbs_user_info.residence[i] = ' ';
- for(i = 0 ; i < 19 ; i++)
- bbs_user_info.reserved[i] = ' ';
- strncpy(bbs_user_info.last_on, "01-01-87 01:00", 14);
- for(i = 0 ; i < 3 ; i++)
- bbs_user_info.last_dir[i] = '\0';
- bbs_user_info.downloads = 0;
- bbs_user_info.uploads = 0;
- bbs_user_info.elapsed = 0;
-
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* Close it */
-
-
- /*
- * Store security level
- */
-
- user_security = bbs_user_info.security;
-
-
- /*
- * Store nulls flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_NULLS)
- user_nulls = 8;
- else
- user_nulls = 0;
-
-
- /*
- * Store caps flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_CASE)
- user_caps = 1;
- else
- user_caps = 0;
-
-
- /*
- * Store page length
- */
-
- user_page = bbs_user_info.options.page_length;
-
-
- /*
- * Store timelimit
- */
-
- user_start = cur_time(); /* Remeber when we started */
-
-
- /*
- * Test for local login
- */
-
- if(strnicmp(ascii_user_info[27], "LOCAL", 5) == 0)
- remote_user = 0;
-
-
- /*
- * Exit
- */
-
- return(0); /* Exit all ok */
-
- }
-
-
- /******************************************************************************
- *
- * GBBS_READ - Read user infor from DOOR.SYS file
- *
- * process 1. If running local, exit
- * 2. Open DOOR.SYS file
- * 3. Exit if not found
- * 4. Read user record
- * 5. Exit if bad read
- * 6. Store users name
- * 7. Store logon time
- * 8. Store security level
- * 9. Store graphics type
- * 10. Store nulls flag
- * 11. Store caps flag
- * 12. Store page length
- * 13. Store used time
- * 14. Store timelimit
- * 15. Close file
- * 16. Exit
- * input Node = -1 if no parameters
- * Else node = BBS node number
- * output Returns 0 if all ok
- * Returns -1 if can't find DOOR.SYS info
- * Returns -2 if can't read DOOR.SYS info
- *****************************************************************************/
-
- gbbs_read(node)
-
- int node; /* BBS node number */
- {
- long cvt_time(); /* Convert time string */
- long cur_time(); /* Get current time */
- long atol(); /* Convert ASCII to long */
-
- FS rfd; /* File control block */
- long foffset; /* File offset */
-
- int i, j, k; /* Work variables */
- char string_data[80]; /* Work space */
-
- /*
- * Exit if local only
- */
-
- if(remote_user == 0) /* If remote not active... */
- return(0); /* ...exit all ok */
-
-
- /*
- * Open DOOR.SYS file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, "DOOR.SYS");
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open the file */
- if(i) /* If file not found... */
- return(-1); /* ...exit with error */
-
-
- /*
- * Read user node record
- */
-
- fseek(rfd.fd, 0L, 0); /* Seek the location */
- i = 0; /* Line counter */
- while((fgets(ascii_user_info[i], 128, rfd.fd) != NULL) && (i < 31))
- i++;
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* Close it */
-
-
- if(i != 31)
- return(-2); /* ...error */
-
-
- /*
- * Copy parms to RBBS structures
- */
-
- i = 0;
- while(ascii_user_info[5][i] == ' ')
- i++;
- if((ascii_user_info[5][i] == 'Y') || (ascii_user_info[5][i] == 'y'))
- {
- bbs_node_info.snoop[0] = '-';
- bbs_node_info.snoop[1] = '1';
- }
- else
- {
- bbs_node_info.snoop[0] = ' ';
- bbs_node_info.snoop[1] = '0';
- }
-
-
- i = 0;
- while(ascii_user_info[6][i] == ' ')
- i++;
- if((ascii_user_info[6][i] == 'Y') || (ascii_user_info[6][i] == 'y'))
- {
- bbs_node_info.line_printer[0] = '-';
- bbs_node_info.line_printer[1] = '1';
- }
- else
- {
- bbs_node_info.line_printer[0] = ' ';
- bbs_node_info.line_printer[1] = '0';
- }
-
-
- i = 0;
- while(ascii_user_info[7][i] == ' ')
- i++;
- if((ascii_user_info[7][i] == 'Y') || (ascii_user_info[7][i] == 'y'))
- {
- bbs_node_info.sysop_avail[0] = '-';
- bbs_node_info.sysop_avail[1] = '1';
- }
- else
- {
- bbs_node_info.sysop_avail[0] = ' ';
- bbs_node_info.sysop_avail[1] = '0';
- }
-
-
-
- while(ascii_user_info[8][i] == ' ')
- i++;
- if((ascii_user_info[8][i] == 'Y') || (ascii_user_info[8][i] == 'y'))
- bbs_user_info.options.bit_flags = BBS_OPTION_BELL;
- else
- bbs_user_info.options.bit_flags = 0;
-
-
- bbs_node_info.sysop_next[0] = ' ';
- bbs_node_info.sysop_next[1] = '0';
-
-
- i = 0;
- while(ascii_user_info[1][i] == ' ')
- i++;
- if(strncmp(&ascii_user_info[1][i], "300", 3) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(strncmp(&ascii_user_info[1][i], "450", 3) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '2';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '2';
- }
- else if(strncmp(&ascii_user_info[1][i], "1200", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
- else if(strncmp(&ascii_user_info[1][i], "2400", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
- else if(strncmp(&ascii_user_info[1][i], "4800", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '5';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '5';
- }
- else if(strncmp(&ascii_user_info[1][i], "9600", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '6';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '6';
- }
- else
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '7';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '7';
- }
-
-
- i = 0;
- j = 0;
- while(ascii_user_info[9][i] == ' ')
- i++;
- while((j < 31) && (ascii_user_info[9][i] != 0x0d) &&
- (ascii_user_info[9][i] != 0x0a) && (ascii_user_info[9][i] != 0x00))
- {
- bbs_node_info.name[j] = ascii_user_info[9][i];
- bbs_user_info.name[j] = ascii_user_info[9][i];
- user_name[j] = ascii_user_info[9][i];
- i++;
- j++;
- }
- while(j < 31)
- {
- bbs_node_info.name[j] = ' ';
- bbs_user_info.name[j] = ' ';
- user_name[j] = ' ';
- j++;
- }
- user_name[j] = '\0';
- bbs_node_info.name[j] = '\0';
- bbs_user_info.name[j] = '\0';
-
-
-
- i = 0;
- while(ascii_user_info[19][i] == ' ')
- i++;
- if(strncmp(&ascii_user_info[19][i], "GR", 2) == 0)
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '2';
- bbs_user_info.options.graphics[0] = '2';
- }
- else
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '0';
- bbs_user_info.options.graphics[0] = '0';
- }
-
-
- i = 0;
- j = 0;
- while(ascii_user_info[13][i] == ' ')
- i++;
- while((j < 12) && (ascii_user_info[13][i] != 0x0d) &&
- (ascii_user_info[13][i] != 0x0a) && (ascii_user_info[13][i] != 0x00))
- {
- bbs_user_info.password[j] = ascii_user_info[13][i];
- i++;
- j++;
- }
- while(j < 12)
- {
- bbs_user_info.password[j] = ' ';
- j++;
- }
- bbs_user_info.password[j] = '\0';
-
-
-
- i = 0;
- while(ascii_user_info[17][i] == ' ')
- i++;
- user_start = cur_time();
- user_signon = cur_time();
- user_signoff = atol(&ascii_user_info[17][i]);
- user_signoff += user_signon;
-
-
- i = 0;
- while(ascii_user_info[14][i] == ' ')
- i++;
- bbs_user_info.security = atoi(&ascii_user_info[14][i]);
-
-
- i = 0;
- while(ascii_user_info[20][i] == ' ')
- i++;
- bbs_user_info.options.page_length = atoi(&ascii_user_info[20][i]);
-
-
- /*
- * Test for local access
- */
-
- i = 0;
- while(ascii_user_info[0][i] == ' ')
- i++;
- if(strcmpi(&(ascii_user_info[27][i]), "COM0") == 0)
- remote_user = 0;
-
-
- /*
- * Fill unsuplied parms to RBBS structures
- */
-
- bbs_node_info.login_time[0] = '0';
- bbs_node_info.login_time[1] = '0';
- bbs_node_info.login_time[2] = '0';
- bbs_node_info.login_time[3] = '0';
- bbs_node_info.login_time[4] = '0';
- bbs_node_info.login_time[5] = '0';
- bbs_node_info.sysop_annoy[0] = ' ';
- bbs_node_info.sysop_annoy[1] = '0';
- bbs_node_info.doors_avail[0] = '-';
- bbs_node_info.doors_avail[1] = '1';
- bbs_node_info.eight_bits[0] = '-';
- bbs_node_info.eight_bits[1] = '1';
- bbs_node_info.upper_case[0] = ' ';
- bbs_node_info.upper_case[1] = '0';
- bbs_node_info.reserve_1[0] = ' ';
- bbs_node_info.reserve_1[1] = ' ';
- bbs_node_info.reserve_1[2] = ' ';
- bbs_node_info.reserve_1[3] = ' ';
- bbs_node_info.reserve_1[4] = ' ';
- bbs_node_info.sysop[0] = ' ';
- bbs_node_info.sysop[1] = '0';
- bbs_node_info.active[0] = 'A';
- bbs_node_info.reserved_2[0] = ' ';
- bbs_node_info.reserved_2[1] = ' ';
- bbs_node_info.reserved_3[0] = ' ';
- bbs_node_info.reserved_3[1] = ' ';
- bbs_node_info.reserved_3[2] = ' ';
- bbs_node_info.private_door[0] = ' ';
- bbs_node_info.private_door[1] = '0';
- bbs_node_info.transfer[0] = ' ';
- bbs_node_info.transfer[1] = ' ';
- strncpy(bbs_node_info.daily_exit_date, "01-01-1987", 10);
- strncpy(bbs_node_info.daily_exit_time, "01:00", 5);
- bbs_node_info.reliable[0] = '-';
- bbs_node_info.reliable[1] = '1';
- for(i = 0 ; i < 36 ; i++)
- bbs_node_info.reserved_4[i] = ' ';
-
-
- bbs_user_info.options.logins = 2;
- bbs_user_info.options.last_msg = 0;
- bbs_user_info.options.protocol[0] = ' ';
- bbs_user_info.options.margins = 0;
- bbs_user_info.options.subscription = 0;
- bbs_user_info.options.reserved[0] = ' ';
- for(i = 0 ; i < 24 ; i++)
- bbs_user_info.residence[i] = ' ';
- for(i = 0 ; i < 19 ; i++)
- bbs_user_info.reserved[i] = ' ';
- strncpy(bbs_user_info.last_on, "01-01-87 01:00", 14);
- for(i = 0 ; i < 3 ; i++)
- bbs_user_info.last_dir[i] = '\0';
- bbs_user_info.downloads = 0;
- bbs_user_info.uploads = 0;
- bbs_user_info.elapsed = 0;
-
-
- /*
- * Store users name
- */
-
- for(i = 0 ; i < 31 ; i++) /* Copy all 31 chars */
- user_name[i] = bbs_node_info.name[i];
- user_name[31] = '\0'; /* Null terminate it */
-
-
- /*
- * Store security level
- */
-
- user_security = bbs_user_info.security;
-
-
- /*
- * Store graphics type
- */
-
- string_data[0] = bbs_user_info.options.graphics[0]; /* Convert to number */
- string_data[1] = '\0';
- user_graphics = atoi(string_data);
-
-
- /*
- * Store nulls flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_NULLS)
- user_nulls = 8;
- else
- user_nulls = 0;
-
-
- /*
- * Store caps flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_CASE)
- user_caps = 1;
- else
- user_caps = 0;
-
-
- /*
- * Store page length
- */
-
- user_page = bbs_user_info.options.page_length;
-
-
- /*
- * Store timelimit
- */
-
- user_start = cur_time(); /* Remeber when we started */
-
-
- /*
- * Exit
- */
-
- return(0); /* Exit all ok */
-
- }
-
-
- /******************************************************************************
- *
- * WBBS_READ - Read user infor from CHAIN.TXT file
- *
- * process 1. If running local, exit
- * 2. Open CHAIN.TXT file
- * 3. Exit if not found
- * 4. Read user record
- * 5. Exit if bad read
- * 6. Store users name
- * 7. Store logon time
- * 8. Store security level
- * 9. Store graphics type
- * 10. Store nulls flag
- * 11. Store caps flag
- * 12. Store page length
- * 13. Store used time
- * 14. Store timelimit
- * 15. Close file
- * 16. Exit
- * input Node = -1 if no parameters
- * Else node = BBS node number
- * output Returns 0 if all ok
- * Returns -1 if can't find CHAIN.TXT info
- * Returns -2 if can't read CHAIN.TXT info
- *****************************************************************************/
-
- wbbs_read(node)
-
- int node; /* BBS node number */
- {
- long cvt_time(); /* Convert time string */
- long cur_time(); /* Get current time */
- long atol(); /* Convert ASCII to long */
-
- FS rfd; /* File control block */
- long foffset; /* File offset */
-
- int i, j, k; /* Work variables */
- char string_data[80]; /* Work space */
-
- /*
- * Exit if local only
- */
-
- if(remote_user == 0) /* If remote not active... */
- return(0); /* ...exit all ok */
-
-
- /*
- * Open CHAIN.TXT file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, "CHAIN.TXT");
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open the file */
- if(i) /* If file not found... */
- return(-1); /* ...exit with error */
-
-
- /*
- * Read user node record
- */
-
- fseek(rfd.fd, 0L, 0); /* Seek the location */
- i = 0; /* Line counter */
- while((fgets(ascii_user_info[i], 128, rfd.fd) != NULL) && (i < 21))
- i++;
-
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* Close it */
-
- if(i != 21)
- return(-2); /* ...error */
-
-
- /*
- * Copy parms to RBBS structures
- */
-
- i = 0;
- while(ascii_user_info[19][i] == ' ')
- i++;
- if(strncmp(&ascii_user_info[19][i], "300", 3) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(strncmp(&ascii_user_info[19][i], "450", 3) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '2';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '2';
- }
- else if(strncmp(&ascii_user_info[19][i], "1200", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
- else if(strncmp(&ascii_user_info[19][i], "2400", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
- else if(strncmp(&ascii_user_info[19][i], "4800", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '5';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '5';
- }
- else if(strncmp(&ascii_user_info[19][i], "9600", 4) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '6';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '6';
- }
- else if(strncmp(&ascii_user_info[19][i], "19200", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '7';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '7';
- }
- else if(strncmp(&ascii_user_info[19][i], "38400", 5) == 0)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '8';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '8';
- }
- else
- {
- remote_user = 0;
- }
-
-
- i = 0;
- j = 0;
- while(ascii_user_info[3][i] == ' ')
- i++;
- while((j < 31) && (ascii_user_info[2][i] != 0x0d) &&
- (ascii_user_info[2][i] != 0x0a) && (ascii_user_info[2][i] != 0x00))
- {
- bbs_node_info.name[j] = ascii_user_info[2][i];
- bbs_user_info.name[j] = ascii_user_info[2][i];
- user_name[j] = ascii_user_info[2][i];
- i++;
- j++;
- }
- while(j < 31)
- {
- bbs_node_info.name[j] = ' ';
- bbs_user_info.name[j] = ' ';
- user_name[j] = ' ';
- j++;
- }
- user_name[j] = '\0';
- bbs_node_info.name[j] = '\0';
- bbs_user_info.name[j] = '\0';
-
-
-
- i = 0;
- while(ascii_user_info[13][i] == ' ')
- i++;
- if(ascii_user_info[13][i] == '1')
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '2';
- bbs_user_info.options.graphics[0] = '2';
- }
- else
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '0';
- bbs_user_info.options.graphics[0] = '0';
- }
-
-
- i = 0;
- while(ascii_user_info[15][i] == ' ')
- i++;
- user_start = cur_time();
- user_signon = cur_time();
- user_signoff = atol(&ascii_user_info[15][i]);
- user_signoff += user_signon;
-
-
- i = 0;
- while(ascii_user_info[10][i] == ' ')
- i++;
- bbs_user_info.security = atoi(&ascii_user_info[10][i]);
-
-
- i = 0;
- while(ascii_user_info[9][i] == ' ')
- i++;
- bbs_user_info.options.page_length = atoi(&ascii_user_info[9][i]);
-
-
- /*
- * Fill unsuplied parms to RBBS structures
- */
-
- bbs_node_info.snoop[0] = '-';
- bbs_node_info.snoop[1] = '1';
- bbs_node_info.line_printer[0] = ' ';
- bbs_node_info.line_printer[1] = '0';
- bbs_node_info.sysop_avail[0] = '-';
- bbs_node_info.sysop_avail[1] = '1';
- bbs_user_info.options.bit_flags = BBS_OPTION_BELL;
- bbs_node_info.sysop_next[0] = ' ';
- bbs_node_info.sysop_next[1] = '0';
- strcpy(bbs_user_info.password, "Password");
- bbs_node_info.login_time[0] = '0';
- bbs_node_info.login_time[1] = '0';
- bbs_node_info.login_time[2] = '0';
- bbs_node_info.login_time[3] = '0';
- bbs_node_info.login_time[4] = '0';
- bbs_node_info.login_time[5] = '0';
- bbs_node_info.sysop_annoy[0] = ' ';
- bbs_node_info.sysop_annoy[1] = '0';
- bbs_node_info.doors_avail[0] = '-';
- bbs_node_info.doors_avail[1] = '1';
- bbs_node_info.eight_bits[0] = '-';
- bbs_node_info.eight_bits[1] = '1';
- bbs_node_info.upper_case[0] = ' ';
- bbs_node_info.upper_case[1] = '0';
- bbs_node_info.reserve_1[0] = ' ';
- bbs_node_info.reserve_1[1] = ' ';
- bbs_node_info.reserve_1[2] = ' ';
- bbs_node_info.reserve_1[3] = ' ';
- bbs_node_info.reserve_1[4] = ' ';
- bbs_node_info.sysop[0] = ' ';
- bbs_node_info.sysop[1] = '0';
- bbs_node_info.active[0] = 'A';
- bbs_node_info.reserved_2[0] = ' ';
- bbs_node_info.reserved_2[1] = ' ';
- bbs_node_info.reserved_3[0] = ' ';
- bbs_node_info.reserved_3[1] = ' ';
- bbs_node_info.reserved_3[2] = ' ';
- bbs_node_info.private_door[0] = ' ';
- bbs_node_info.private_door[1] = '0';
- bbs_node_info.transfer[0] = ' ';
- bbs_node_info.transfer[1] = ' ';
- strncpy(bbs_node_info.daily_exit_date, "01-01-1987", 10);
- strncpy(bbs_node_info.daily_exit_time, "01:00", 5);
- bbs_node_info.reliable[0] = '-';
- bbs_node_info.reliable[1] = '1';
- for(i = 0 ; i < 36 ; i++)
- bbs_node_info.reserved_4[i] = ' ';
-
-
- bbs_user_info.options.logins = 2;
- bbs_user_info.options.last_msg = 0;
- bbs_user_info.options.protocol[0] = ' ';
- bbs_user_info.options.margins = 0;
- bbs_user_info.options.subscription = 0;
- bbs_user_info.options.reserved[0] = ' ';
- for(i = 0 ; i < 24 ; i++)
- bbs_user_info.residence[i] = ' ';
- for(i = 0 ; i < 19 ; i++)
- bbs_user_info.reserved[i] = ' ';
- strncpy(bbs_user_info.last_on, "01-01-87 01:00", 14);
- for(i = 0 ; i < 3 ; i++)
- bbs_user_info.last_dir[i] = '\0';
- bbs_user_info.downloads = 0;
- bbs_user_info.uploads = 0;
- bbs_user_info.elapsed = 0;
-
-
- /*
- * Store users name
- */
-
- for(i = 0 ; i < 31 ; i++) /* Copy all 31 chars */
- user_name[i] = bbs_node_info.name[i];
- user_name[31] = '\0'; /* Null terminate it */
-
-
- /*
- * Store security level
- */
-
- user_security = bbs_user_info.security;
-
-
- /*
- * Store graphics type
- */
-
- string_data[0] = bbs_user_info.options.graphics[0]; /* Convert to number */
- string_data[1] = '\0';
- user_graphics = atoi(string_data);
-
-
- /*
- * Store nulls flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_NULLS)
- user_nulls = 8;
- else
- user_nulls = 0;
-
-
- /*
- * Store caps flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_CASE)
- user_caps = 1;
- else
- user_caps = 0;
-
-
- /*
- * Store page length
- */
-
- user_page = bbs_user_info.options.page_length;
-
-
- /*
- * Store timelimit
- */
-
- user_start = cur_time(); /* Remeber when we started */
-
-
- /*
- * Exit
- */
-
- return(0); /* Exit all ok */
-
- }
-
-
- /******************************************************************************
- *
- * SFBBS_READ - Read user infor from Spitfire file
- *
- * process 1. If running local, exit
- * 2. Open Spitfire file
- * 3. Exit if not found
- * 4. Read user record
- * 5. Exit if bad read
- * 6. Store users name
- * 7. Store logon time
- * 8. Store security level
- * 9. Store graphics type
- * 10. Store nulls flag
- * 11. Store caps flag
- * 12. Store page length
- * 13. Store used time
- * 14. Store timelimit
- * 15. Close file
- * 16. Exit
- * input Node = -1 if no parameters
- * Else node = BBS node number
- * output Returns 0 if all ok
- * Returns -1 if can't find Spitfire info
- * Returns -2 if can't read Spitfire info
- *****************************************************************************/
-
- sfbbs_read(node, sfname)
-
- int node; /* BBS node number */
- char *sfname; /* Spitfire data file */
- {
- long cvt_time(); /* Convert time string */
- long cur_time(); /* Get current time */
- long atol(); /* Convert ASCII to long */
-
- FS rfd; /* File control block */
- long foffset; /* File offset */
-
- int i, j, k; /* Work variables */
- char string_data[80]; /* Work space */
-
- /*
- * Exit if local only
- */
-
- if(remote_user == 0) /* If remote not active... */
- return(0); /* ...exit all ok */
-
-
- /*
- * Open Spitfire file
- */
-
- strcpy(rfd.name, bbs_dir); /* Build the filename */
- strcat(rfd.name, sfname);
-
- i = file_open(&rfd, FREAD, FBINARY, FNOCREATE); /* Open the file */
- if(i) /* If file not found... */
- return(-1); /* ...exit with error */
-
-
- /*
- * Read user node record
- */
-
- fseek(rfd.fd, 0L, 0); /* Seek the location */
- i = 0; /* Line counter */
- while((fgets(ascii_user_info[i], 128, rfd.fd) != NULL) && (i < 20))
- i++;
-
-
- /*
- * Close file
- */
-
- file_close(&rfd); /* Close it */
-
- if(i != 20)
- return(-2); /* ...error */
-
-
- /*
- * Copy parms to RBBS structures
- */
-
- i = 0;
- while(ascii_user_info[19][i] == ' ')
- i++;
- if(atoi(&(ascii_user_info[4][i])) == 0)
- {
- remote_user = 0;
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
- else if(atoi(&(ascii_user_info[4][i])) == 300)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '1';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '1';
- }
- else if(atoi(&(ascii_user_info[4][i])) == 450)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '2';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '2';
- }
- else if(atoi(&(ascii_user_info[4][i])) == 1200)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '3';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '3';
- }
- else if(atoi(&(ascii_user_info[4][i])) == 2400)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
- else if(atoi(&(ascii_user_info[4][i])) == 4800)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '5';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '5';
- }
- else if(atoi(&(ascii_user_info[4][i])) == 9600)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '6';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '6';
- }
- else if(atoi(&(ascii_user_info[4][i])) == 19200)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '7';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '7';
- }
- else if(atoi(&(ascii_user_info[4][i])) == 38400)
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '8';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '8';
- }
- else
- {
- bbs_node_info.baud_rate[0] = '-';
- bbs_node_info.baud_rate[1] = '4';
- bbs_node_info.baud_dial[0] = '-';
- bbs_node_info.baud_dial[1] = '4';
- }
-
-
- i = 0;
- j = 0;
- while(ascii_user_info[1][i] == ' ')
- i++;
- while((j < 31) && (ascii_user_info[1][i] != 0x0d) &&
- (ascii_user_info[1][i] != 0x0a) && (ascii_user_info[1][i] != 0x00))
- {
- bbs_node_info.name[j] = ascii_user_info[1][i];
- bbs_user_info.name[j] = ascii_user_info[1][i];
- user_name[j] = ascii_user_info[1][i];
- i++;
- j++;
- }
- while(j < 31)
- {
- bbs_node_info.name[j] = ' ';
- bbs_user_info.name[j] = ' ';
- user_name[j] = ' ';
- j++;
- }
- user_name[j] = '\0';
- bbs_node_info.name[j] = '\0';
- bbs_user_info.name[j] = '\0';
-
-
-
- i = 0;
- while(ascii_user_info[9][i] == ' ')
- i++;
- if(strcmpi(&(ascii_user_info[9][i]), "TRUE") == 0)
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '2';
- bbs_user_info.options.graphics[0] = '2';
- }
- else
- {
- bbs_node_info.graphics_type[0] = ' ';
- bbs_node_info.graphics_type[0] = '0';
- bbs_user_info.options.graphics[0] = '0';
- }
-
-
- i = 0;
- while(ascii_user_info[6][i] == ' ')
- i++;
- user_start = cur_time();
- user_signon = cur_time();
- user_signoff = atol(&ascii_user_info[6][i]);
- user_signoff *= 60L;
- user_signoff += user_signon;
-
-
- i = 0;
- while(ascii_user_info[10][i] == ' ')
- i++;
- bbs_user_info.security = atoi(&ascii_user_info[10][i]);
-
-
- /*
- * Fill unsuplied parms to RBBS structures
- */
-
- bbs_node_info.snoop[0] = '-';
- bbs_node_info.snoop[1] = '1';
- bbs_node_info.line_printer[0] = ' ';
- bbs_node_info.line_printer[1] = '0';
- bbs_node_info.sysop_avail[0] = '-';
- bbs_node_info.sysop_avail[1] = '1';
- bbs_user_info.options.bit_flags = BBS_OPTION_BELL;
- bbs_user_info.options.page_length = 23;
- bbs_node_info.sysop_next[0] = ' ';
- bbs_node_info.sysop_next[1] = '0';
- strcpy(bbs_user_info.password, "Password");
- bbs_node_info.login_time[0] = '0';
- bbs_node_info.login_time[1] = '0';
- bbs_node_info.login_time[2] = '0';
- bbs_node_info.login_time[3] = '0';
- bbs_node_info.login_time[4] = '0';
- bbs_node_info.login_time[5] = '0';
- bbs_node_info.sysop_annoy[0] = ' ';
- bbs_node_info.sysop_annoy[1] = '0';
- bbs_node_info.doors_avail[0] = '-';
- bbs_node_info.doors_avail[1] = '1';
- bbs_node_info.eight_bits[0] = '-';
- bbs_node_info.eight_bits[1] = '1';
- bbs_node_info.upper_case[0] = ' ';
- bbs_node_info.upper_case[1] = '0';
- bbs_node_info.reserve_1[0] = ' ';
- bbs_node_info.reserve_1[1] = ' ';
- bbs_node_info.reserve_1[2] = ' ';
- bbs_node_info.reserve_1[3] = ' ';
- bbs_node_info.reserve_1[4] = ' ';
- bbs_node_info.sysop[0] = ' ';
- bbs_node_info.sysop[1] = '0';
- bbs_node_info.active[0] = 'A';
- bbs_node_info.reserved_2[0] = ' ';
- bbs_node_info.reserved_2[1] = ' ';
- bbs_node_info.reserved_3[0] = ' ';
- bbs_node_info.reserved_3[1] = ' ';
- bbs_node_info.reserved_3[2] = ' ';
- bbs_node_info.private_door[0] = ' ';
- bbs_node_info.private_door[1] = '0';
- bbs_node_info.transfer[0] = ' ';
- bbs_node_info.transfer[1] = ' ';
- strncpy(bbs_node_info.daily_exit_date, "01-01-1987", 10);
- strncpy(bbs_node_info.daily_exit_time, "01:00", 5);
- bbs_node_info.reliable[0] = '-';
- bbs_node_info.reliable[1] = '1';
- for(i = 0 ; i < 36 ; i++)
- bbs_node_info.reserved_4[i] = ' ';
-
-
- bbs_user_info.options.logins = 2;
- bbs_user_info.options.last_msg = 0;
- bbs_user_info.options.protocol[0] = ' ';
- bbs_user_info.options.margins = 0;
- bbs_user_info.options.subscription = 0;
- bbs_user_info.options.reserved[0] = ' ';
- for(i = 0 ; i < 24 ; i++)
- bbs_user_info.residence[i] = ' ';
- for(i = 0 ; i < 19 ; i++)
- bbs_user_info.reserved[i] = ' ';
- strncpy(bbs_user_info.last_on, "01-01-87 01:00", 14);
- for(i = 0 ; i < 3 ; i++)
- bbs_user_info.last_dir[i] = '\0';
- bbs_user_info.downloads = 0;
- bbs_user_info.uploads = 0;
- bbs_user_info.elapsed = 0;
-
-
- /*
- * Store users name
- */
-
- for(i = 0 ; i < 31 ; i++) /* Copy all 31 chars */
- user_name[i] = bbs_node_info.name[i];
- user_name[31] = '\0'; /* Null terminate it */
-
-
- /*
- * Store security level
- */
-
- user_security = bbs_user_info.security;
-
-
- /*
- * Store graphics type
- */
-
- string_data[0] = bbs_user_info.options.graphics[0]; /* Convert to number */
- string_data[1] = '\0';
- user_graphics = atoi(string_data);
-
-
- /*
- * Store nulls flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_NULLS)
- user_nulls = 8;
- else
- user_nulls = 0;
-
-
- /*
- * Store caps flag
- */
-
- if(bbs_user_info.options.bit_flags & BBS_OPTION_CASE)
- user_caps = 1;
- else
- user_caps = 0;
-
-
- /*
- * Store page length
- */
-
- user_page = bbs_user_info.options.page_length;
-
-
- /*
- * Store timelimit
- */
-
- user_start = cur_time(); /* Remeber when we started */
-
-
- /*
- * Exit
- */
-
- return(0); /* Exit all ok */
-
- }
-
-
- /******************************************************************************
- *
- * PAGE_OPERATOR - Page local operator
- *
- * process 1. If running local, exit
- * 2. Ring local bell
- * 3. Test for local input
- * 4. If local input, exit true
- * 5. Goto 2
- * input None
- * output Returns 1 if page answered
- * Returns 0 if page not answered
- *****************************************************************************/
-
- page_operator()
- {
- long cur_time();
-
- long time_now;
- int normal_hours = 0;
- int i, j;
- int key;
-
- if(remote_user)
- {
- time_now = cur_time(); /* Get current time */
- if((time_now >= bbs_time_info.sysop_start) &&
- (time_now <= bbs_time_info.sysop_stop))
- {
- normal_hours = 1;
- }
-
- if(((normal_hours == 1) && (bbs_node_info.sysop_avail[1] == '1')) ||
- (bbs_node_info.sysop_annoy[1] == '1'))
- {
- for(i = 0 ; i < 10 ; i++) /* Try 10 times */
- {
- local_bell(); /* Ring the bell */
- print_char('.'); /* Print a dot */
- for(j = 0 ; j < 5000 ; j++) /* Try a bunch of times */
- {
- if(local_status()) /* Test for response */
- {
- if(local_input() == 0x1b)
- {
- print_string("\r\nSysOp in, go ahead...\r\n");
- return(1); /* Page answered if ESC */
- }
- }
- }
- }
- }
- }
- return(0); /* Exit, page unanswered */
- }
-
-
- /******************************************************************************
- *
- * CHAT_MODE - Chat between local & remote
- *
- * process 1. If running local, exit
- * 2. Test status
- * 3. If nothing, goto 2
- * 4. Get the char
- * 5. If remote goto 8
- * 6. Test if ESC
- * 7. Exit if so
- * 8. Echo the character
- * 9. Goto 2
- * input None
- * output Returns 0
- *****************************************************************************/
-
- chat_mode()
- {
- long cur_time();
- long time1;
- long time2;
- int i, j;
- int key, keys;
-
- char dim[5];
- char bright[5];
- int current;
-
- char tbuff[80];
- int index;
-
-
- if(remote_user) /* If remote enable... */
- {
- if(user_graphics == 2) /* If ANSI is enabled... */
- {
- strcpy(dim, ""); /* ...set the ANSI codes */
- strcpy(bright, "");
- }
- else
- {
- strcpy(dim, "\0"); /* ...set the null codes */
- strcpy(bright, "\0");
- }
- current = -1; /* Set to undefined state */
-
-
- time1 = cur_time(); /* Save current time */
- index = 0;
- while(1) /* Do forever */
- {
- keys = 0;
- while(keys == 0) /* Do until we get a key */
- keys = io_status();
-
- if(keys == 1) /* If local input... */
- {
- key = local_input(); /* ...get keyboard char */
- if(key == 0x1b) /* ...test if terminating */
- {
- print_string("\r\nReturning to program...\r\n\r\n");
- time2 = cur_time(); /* ...get time now */
- if(time2 < time1) /* ...adjust if necessary */
- time2 += DAY_SECONDS;
- time2 -= time1; /* ...compute time in CHAT */
- user_signon += time2; /* ...adjust users time */
- user_signoff += time2;
- return(0); /* ...exit if so */
- }
- }
- else
- key = modem_input(); /* Get modem char */
-
- if(key != 0)
- {
- if(current != keys) /* If we need to change ints */
- {
- if(keys == 1)
- print_string(bright); /* ...bright for SysOp */
- else
- print_string(dim); /* ...dim for user */
-
- current = keys;
- }
-
- print_char(key); /* else echo it */
- if(key == 0x0d) /* if carriage return */
- {
- print_char(0x0a); /* ...then echo line feed */
- index = 0; /* ...and reset wrap index */
- }
- else if(key == 0x08) /* if a backspace */
- {
- if(index > 0) /* ...then adjust wrap index */
- index--;
- }
- else if(key >= ' ') /* if a printable character */
- {
- tbuff[index] = key; /* ...then store it */
- index++; /* ...and bump counter */
-
- if(index == 79) /* if we need to word wrap */
- {
- i = index - 1; /* start with last char */
- while((i > 0) && (tbuff[i] != ' '))
- i--;
-
- if(i > 0)
- {
- j = index; /* backup to start of word */
- while(j > i)
- {
- print_char(0x08);
- j--;
- }
-
- print_char(0x0d); /* new line */
- print_char(0x0a);
-
- j++; /* now print what we have */
- i = index;
- index = 0;
- while(j < i)
- {
- print_char(tbuff[j]);
- tbuff[index] = tbuff[j];
- index++;
- j++;
- }
- }
- }
- }
- }
- }
- }
- return(0); /* Exit */
- }
-
-